/**
 * 
 */
package fr.gfi.agraf.persistence.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.persistence.NoResultException;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Repository;
import org.springframework.util.CollectionUtils;

import fr.gfi.agraf.persistence.dao.IEtatDAO;
import fr.gfi.agraf.persistence.entity.Etat;
import fr.gfi.agraf.utils.PropertiesUtils;

/**
 * @author Zakaria
 *
 */
@Repository
public class EtatDAO extends AbstractGenericDAO<Etat> implements IEtatDAO {

	private static final String ID = "id";
	private static final String HQL_ETAT_AVAILABLE = "hql.etat.available";
	/**
	 * Logger
	 */
	private final static Logger LOGGER = Logger.getLogger(EtatDAO.class);

	/*
	 * (non-Javadoc)
	 * 
	 * @see fr.gfi.agraf.persistence.dao.IEtatDAO#getEtatsMap()
	 */
	public Map<Long, Etat> getEtatsMap() {
		final Map<Long, Etat> etatMap = new HashMap<Long, Etat>();
		// récupere tous les etats
		final List<Etat> etatList = listerTous();
		if (!CollectionUtils.isEmpty(etatList)) {
			for (final Etat etat : etatList) {
				etatMap.put(etat.getId(), etat);
			}
		}
		return etatMap;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see fr.gfi.agraf.persistence.dao.IEtatDAO#getAllEtatsAvailable()
	 */
	public List<Etat> getAllEtatsAvailable() {
		List<Etat> etatList = null;
		// Récupere la requete dans le fichier properties
		final String query = PropertiesUtils.getProperty(HQL_ETAT_AVAILABLE);
		try {
			// Execute la query
			etatList = em.createQuery(query, Etat.class).setParameter(ID, 1L)
					.getResultList();
		} catch (final NoResultException e) {
			LOGGER.error(e);
		}

		return etatList;
	}

}
